/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.hdasnvicpaul.entidad;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author WILLIAN
 */
@Entity
@Table(name = "ANCIANO", catalog = "", schema = "HASP")
@NamedQueries({
    @NamedQuery(name = "Anciano.findAll", query = "SELECT a FROM Anciano a"),
    @NamedQuery(name = "Anciano.findByInstitucion", query = "SELECT a FROM Anciano a WHERE a.ancianoPK.institucion = :institucion"),
    @NamedQuery(name = "Anciano.correlativo", query = "SELECT count(a) FROM Anciano a WHERE a.ancianoPK.institucion = :institucion and a.ancianoPK.sucursal = :sucursal"),
    @NamedQuery(name = "Anciano.findBySucursal", query = "SELECT a FROM Anciano a WHERE a.ancianoPK.sucursal = :sucursal"),
    @NamedQuery(name = "Anciano.findByCodigo", query = "SELECT a FROM Anciano a WHERE a.ancianoPK.codigo = :codigo"),
    @NamedQuery(name = "Anciano.findByPrimerNombre", query = "SELECT a FROM Anciano a WHERE a.primerNombre = :primerNombre"),
    @NamedQuery(name = "Anciano.findBySegundoNombre", query = "SELECT a FROM Anciano a WHERE a.segundoNombre = :segundoNombre"),
    @NamedQuery(name = "Anciano.findByPrimerApellido", query = "SELECT a FROM Anciano a WHERE a.primerApellido = :primerApellido"),
    @NamedQuery(name = "Anciano.findBySegundoApellido", query = "SELECT a FROM Anciano a WHERE a.segundoApellido = :segundoApellido"),
    @NamedQuery(name = "Anciano.findByFechaNacimiento", query = "SELECT a FROM Anciano a WHERE a.fechaNacimiento = :fechaNacimiento"),
    @NamedQuery(name = "Anciano.findByFechaIngreso", query = "SELECT a FROM Anciano a WHERE a.fechaIngreso = :fechaIngreso")})
public class Anciano implements Serializable {
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected AncianoPK ancianoPK;
    @Column(name = "PRIMER_NOMBRE", length = 50)
    private String primerNombre;
    @Column(name = "SEGUNDO_NOMBRE", length = 50)
    private String segundoNombre;
    @Column(name = "PRIMER_APELLIDO", length = 50)
    private String primerApellido;
    @Column(name = "SEGUNDO_APELLIDO", length = 50)
    private String segundoApellido;
    @Column(name = "FECHA_NACIMIENTO")
    @Temporal(TemporalType.DATE)
    private Date fechaNacimiento;
    @Column(name = "FECHA_INGRESO")
    @Temporal(TemporalType.DATE)
    private Date fechaIngreso;
    @JoinColumns({
        @JoinColumn(name = "SUCURSAL", referencedColumnName = "CODIGO", nullable = false, insertable = false, updatable = false),
        @JoinColumn(name = "INSTITUCION", referencedColumnName = "INSTITUCION", nullable = false, insertable = false, updatable = false)})
    @ManyToOne(optional = false)
    private Sucursal sucursal1;

    public Anciano() {
    }

    public Anciano(AncianoPK ancianoPK) {
        this.ancianoPK = ancianoPK;
    }

    public Anciano(long institucion, long sucursal, long codigo) {
        this.ancianoPK = new AncianoPK(institucion, sucursal, codigo);
    }

    public AncianoPK getAncianoPK() {
        return ancianoPK;
    }

    public void setAncianoPK(AncianoPK ancianoPK) {
        this.ancianoPK = ancianoPK;
    }

    public String getPrimerNombre() {
        return primerNombre;
    }

    public void setPrimerNombre(String primerNombre) {
        this.primerNombre = primerNombre;
    }

    public String getSegundoNombre() {
        return segundoNombre;
    }

    public void setSegundoNombre(String segundoNombre) {
        this.segundoNombre = segundoNombre;
    }

    public String getPrimerApellido() {
        return primerApellido;
    }

    public void setPrimerApellido(String primerApellido) {
        this.primerApellido = primerApellido;
    }

    public String getSegundoApellido() {
        return segundoApellido;
    }

    public void setSegundoApellido(String segundoApellido) {
        this.segundoApellido = segundoApellido;
    }

    public Date getFechaNacimiento() {
        return fechaNacimiento;
    }

    public void setFechaNacimiento(Date fechaNacimiento) {
        this.fechaNacimiento = fechaNacimiento;
    }

    public Date getFechaIngreso() {
        return fechaIngreso;
    }

    public void setFechaIngreso(Date fechaIngreso) {
        this.fechaIngreso = fechaIngreso;
    }

    public Sucursal getSucursal1() {
        return sucursal1;
    }

    public void setSucursal1(Sucursal sucursal1) {
        this.sucursal1 = sucursal1;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (ancianoPK != null ? ancianoPK.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Anciano)) {
            return false;
        }
        Anciano other = (Anciano) object;
        if ((this.ancianoPK == null && other.ancianoPK != null) || (this.ancianoPK != null && !this.ancianoPK.equals(other.ancianoPK))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.hdasnvicpaul.entidad.Anciano[ancianoPK=" + ancianoPK + "]";
    }

}
